package com.sprouting.personal.handler;

import org.springframework.core.io.FileSystemResource;
import org.springframework.stereotype.Component;
import org.springframework.core.io.Resource;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;

import javax.servlet.http.HttpServletRequest;

/**
 * 用于处理视频在线播放的功能
 * 参考资料：https://my.oschina.net/sprouting/blog/5594339
 *
 * ResourceHttpRequestHandler是springboot加载静态资源的一个类，平时是用来从你resources/statics等目录加载文件的。
 * 利用这个类中 支持range请求数据 的特性，来实现分片加载，就是客户端无需下载整个视频了，可以拖动进度条，分段请求服务器
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2022/11/17 11:11
 */
@Component
public class NonStaticResourceHttpRequestHandler extends ResourceHttpRequestHandler {

    public final static String ATTR_FILE = "NON-STATIC-FILE";

    @Override
    protected Resource getResource(HttpServletRequest request) {
        String filePath =  (String) request.getAttribute(ATTR_FILE);
        return new FileSystemResource(filePath);
    }
}
